<?php
	
	class BaseController {
		
		var $mode = "DAO";
		var $reference;
		
		public static $DB;
		public static $dbUSER;
		public static $dbPASS;
		public static $dbBASE;
		
		function __construct($reference){
			$this->reference = $reference;
		}
		
		function setMode($var){
			$this->mode = $var;
		}
		
		function setDB($var){
			$this->DB = $var;
		}
		
		function setDbUSER($var){
			$this->dbUSER = $var;
		}
		
		function setDbPASS($var){
			$this->dbPASS = $var;
		}
		
		function setDbBASE($var){
			$this->dbBASE = $var;
		}
		
		function getMode(){
			return $this->mode;
		}
		
		function commit($validate=true){
			if($validate){
				if( !$this->reference->validate() ){
					return false;
				}
			}
			
			if($this->getMode() == "DAO"){
				$this->reference->startDAO();
				if($this->reference->VO->id > 0){
					return $this->reference->DAO->updateVO($this->VO);
				} else {
					return $this->reference->DAO->insertVO($this->VO);
				}
			}	
			
		}
		
		/**
		 * 	@return id (int)
		 * 	Insere sem validação, com ativo 0, apenas pra ter ID pra update posterior.
		 * 	Isso serve no caso de vc querer vincular algo antes de terminar de criar
		 * 	um conteúdo.  
		 */
		function insertToGetId(){
			$this->reference->startDAO();
			return $this->reference->DAO->insertToGetId();
		}
		
		
		function fetchArrayPush($result){
			$resultArray = array();
			while($tempArray = $this->fetch_array($result)){
				array_push($resultArray, $tempArray);
			}
			return $resultArray;
		}
		
		function fetch_row($query){
			return mysql_fetch_row($query);
		}

		function fetch_array($result){
			return mysql_fetch_array($result);
		}
	
		function fetch_object($result){
			return mysql_fetch_object($result);
		}
		
		
		/** 
		 * 	VALIDATE METHODS
		 */
		
		function validateValue(){
			if(strlen($this->reference->VO->value) < 2){
				$this->reference->VO->addMessage("Nome pequeno");
				return false;
			}
			return true;
		}
		function validateName(){
			if(strlen($this->reference->VO->name) < 2){
				$this->reference->VO->addMessage("Nome pequeno");
				return false;
			}
			return true;
		}
		function validatePass($retype = true){
			if(strlen($this->reference->VO->pass) < 8){
				$this->reference->VO->addMessage("Senha deve ter no mínimo 8 caracteres");
				return false;
			}
			if($retype){
				if($this->reference->VO->pass != $this->reference->VO->pass2){
					$this->reference->VO->addMessage("Os dois campos de senha devem ser iguais");
				return false;
				}
			}
			return true;
		}
		function validateEmail(){
			if(strlen($this->reference->VO->email) < 6){
				$this->reference->VO->addMessage("E-mail inválido");
				return false;
			}
			return true;
		}
		function validateLoginExists(){
			if($this->reference->loginExists()){
				$this->reference->VO->addMessage("Este usuário já existe");
				return false;
			}
			return true;
		}
		
		function validateValueExists(){
			if($this->reference->valueExists()){
				$this->reference->VO->addMessage("Este tipo de usuário já existe");
				return false;
			}
			return true;
		}
		
	}
	
?>